Computers or computing systems can perform arithmetic operations, including numerical divisions using a binary representation of data (i.e., using bit values of zero (0) and one (1)). In binary arithmetic, division by two can be performed by a bit shift operation that shifts the number one place to the right. This is a form of strength reduction optimization. For example, “1101001” in binary (the decimal number 105), shifted one place to the right, is “110100” (the decimal number 52): the lowest order bit, a 1, is removed. Similarly, division by any power of two 2k may be performed by right-shifting k positions. However, division in general, and especially division of large numbers by number that are not divisible by two, including prime numbers, can be a very time consuming.
Conventional techniques are generally known in the art for dividing numbers in a computing system. A number of the conventional techniques produce one digit of the final quotient per iteration and are known as “slow division techniques (e.g., restoring, non-performing restoring, non-restoring, and SRT division). Other conventional techniques, which are known as “fast division,” start with a close approximation to the final quotient and produce twice as many digits of the final quotient in each of the succeeding iterations.
One important aspect of computing and computing systems is memory and memory mapping. In particular, computer systems that operate with relatively large amounts of memory (e.g., main memory provided as Random Access Memory (RAM)) can generally use a contiguous system-wide global addressing space through which each main memory location may be addressed, for example, by at least one CPU and/or other devices without concern for how the memory (e.g., RAM) itself may be physically organized in the system. In contrast to this requirement, the desire for accessing memory (e.g., RAM) with a high bandwidth and physical signaling problems, generally lead to the memory being partitioned into separate, independently accessible groups, hereinafter called “memory channels”. This means that there is a need for mapping a given Global Address (GA) to a Channel Address (CA) which is an address corresponding to a particular one of multiple memory channels.
One form of a computing system that is especially useful and prevalent today is a database or database system capable of storing data. As such, data and databases are discussed in greater detail below.
Data can be an abstract term. In the context of computing environments and system, data can generally encompass all forms of information storable in a computer readable medium (e.g., memory, hard disk). Data and in particular, one or more instances of data can also be referred to as data object(s). As is generally known in the art, a data object can for example, be an actual instance of data, a class, type, or form data, and so on.
The term database can refer to a collection of data and/or data structures typically stored in a digital form. Data can be stored in a database for various reasons and to serve various entities or “users.” Generally, data stored in the database can be used by the database users. A user of a database can, for example, be a person, a database administrator, a computer application designed to interact with a database, etc. A very simple database or database system can, for example, be provided on a Personal Computer (PC) by storing data on a Hard Disk (e.g., contact information) and executing a computer program that allows access to the data. The executable computer program can be referred to as a database program or a database management program. The executable computer program can, for example, retrieve and display data (e.g., a list of names with their phone numbers) based on a request submitted by a person (e.g., show me the phone numbers of all my friends in Ohio).
Generally, database systems are much more complex than the example noted above. In addition, databases have evolved over the years and are used in various businesses and organizations (e.g., banks, retail stores, governmental agencies, universities). Today, databases can be very complex. Some databases can support several users simultaneously and allow them to make very complex queries (e.g., give me the names of all customers under the age of thirty five (35) in Ohio that have bought all the items in a given list of items in the past month and also have bought a ticket for a baseball game and purchased a baseball hat in the past 10 years).
Typically, a Database Manager (DM) or a Database Management System (DBMS) is provided for relatively large and/or complex databases. As known in the art, a DBMS can effectively manage the database or data stored in a database, and serve as an interface for the users of the database. A DBMS can be provided as an executable computer program (or software) product as is also known in the art.
It should also be noted that a database can be organized in accordance with a Data Model. Notable Data Models include a Relational Model, an Entity-relationship model, and an Object Model. The design and maintenance of a complex database can require highly specialized knowledge and skills by database application programmers, DBMS developers/programmers, database administrators (DBAs), etc. To assist in design and maintenance of a complex database, various tools can be provided, either as part of the DBMS or as free-standing (stand-alone) software products. These tools can include specialized Database languages (e.g., Data Description Languages, Data Manipulation Languages, Query Languages). Database languages can be specific to one data model or to one DBMS type. One widely supported language is Structured Query Language (SQL) developed, by in large, for Relational Model and can combine the roles of Data Description Language, Data Manipulation language, and a Query Language.
Today, databases have become prevalent in virtually all aspects of business and personal life. Moreover, database use is likely to continue to grow even more rapidly and widely across all aspects of commerce. Generally, databases and DBMS that manage them can be very large and extremely complex partly in order to support an ever increasing need to store data and analyze data. Typically, larger databases are used by larger organizations. Larger databases are supported by a relatively large amount of capacity, including computing capacity (e.g., processor and memory) to allow them to perform many tasks and/or complex tasks effectively at the same time (or in parallel). On the other hand, smaller databases systems are also available today and can be used by smaller organizations. In contrast to larger databases, smaller databases can operate with less capacity.
A popular type of database in use today is the relational database with a Relational Database Management System (RDBMS), which includes relational tables, also referred to as relations, made up of rows and columns (also referred to as tuples and attributes). In a relational database, each row represents an occurrence of an entity defined by a table, with an entity being a person, place, thing, or other object about which the table contains information.
In view of the foregoing, techniques for division and memory mapping are useful for various computer systems and environments, including, for example, database systems and environments.